package query.db;

import java.util.List;

import query.bean.Answer;
import query.bean.Paper;

/**
 * 答卷数据库操作接口
 * 
 * @author lzy
 * @version 1.0.4
 * 
 */
public interface PaperRepository {

	/**
	 * 创建一个答卷
	 * 
	 * @param questionnaireId 答卷对应的问卷的id
	 * @return 创建好的答卷对象
	 */
	public Paper insertPaper(long questionnaireId);

	/**
	 * 新建一条回答
	 * 
	 * @param answer 要创建的回答对象
	 * @return 操作结果
	 */
	public boolean insertAnswer(Answer answer);

	/**
	 * 删除一个答卷的所有回答
	 * 
	 * @param paperId 答卷id
	 * @return 操作结果
	 */
	public boolean deleteAnswer(long paperId);

	/**
	 * 删除一个答卷
	 * 
	 * @param paperId 答卷id
	 * @return 操作结果
	 */
	public boolean deletePaper(long paperId);

	/**
	 * 删除一个问卷的所有答卷
	 * 
	 * @param questionnaireId 问卷id
	 * @return 操作结果
	 */
	public boolean deletePapers(long questionnaireId);

	/**
	 * 获取一个问卷的所有答卷
	 * 
	 * @param questionnaireId 问卷id
	 * @return 答卷列表
	 */
	public List<Paper> searchPaper(long questionnaireId);

	/**
	 * 获取一个问卷指定下标的答卷(按答卷id排序)
	 * 
	 * @param questionnaireId 问卷id
	 * @param start           起始下标(该下标的问卷不包括在内)
	 * @param num             要获取的问卷数目
	 * @return 问卷列表
	 */
	public List<Paper> searchPaper(long questionnaireId, int start, int num);

	/**
	 * 获取一个答卷的所有回答
	 * 
	 * @param paperId 答卷id
	 * @return 回答列表
	 */
	public List<Answer> searchAnswer(long paperId);

	/**
	 * 根据id搜寻答卷
	 * 
	 * @param paperId 答卷id
	 * @return 搜索结果
	 */
	public Paper search(long paperId);
}
